HarmonyOS-鸿蒙app开发 —基于java_智能穿戴_多样化数据显示_复杂数据类型

HarmonyOS-鸿蒙app开发 —基于java_智能穿戴_多样化数据显示_复杂数据类型

开发者静态注册时,需要在配置文件config.json声明支持的Complication类型,并在收到请求时,将对应类型的数据返回给表盘。

复杂数据按功能和样式分类,类型约束数据支持的功能,样式约束数据中包含的字段。在提供数据(含预览数据)时,开发者需要指定类型和模板,创建ComplicationEntity对象时需要提供这两个参数。

Complication Kit支持5种复杂数据类型Complication,分别为应用入口型、简单数值型、区间数值型、大尺寸数值型和列表数值型。

Complication Kit针对每种类型的复杂数据提供了不同模板ComplicationTemplate,开发者根据需要选取合适的模板。

表1 复杂数据类型与模板

类型

模板

Icon格式

Title长度(单位:字符数)

Value长度(单位:字符数)

TYPE_NO_DATA

TEMPLATE_EMPTY

TYPE_LAUNCHER

TEMPLATE_LAUNCHER_ICON

PNG(推荐108*108)

TYPE_SIMPLE

TEMPLATE_ICON_TEXT

PNG(推荐52*52)

8

TEMPLATE_ICON_DIGIT

PNG(推荐52*52)

TEMPLATE_TITLE_TEXT

8

8

TEMPLATE_TITLE_DIGIT

8

TEMPLATE_ICON_TITLE_DIGIT

PNG(推荐52*52)

8

TEMPLATE_ICON_TITLE_TEXT

PNG(推荐52*52)

8

8

TYPE_RANGED

TEMPLATE_ICON_RANGED

PNG(推荐52*52)

TEMPLATE_TITLE_RANGED

8

TEMPLATE_ICON_TITLE_RANGED

PNG(推荐52*52)

8

TYPE_LARGE

TEMPLATE_ICON_LARGE

PNG(推荐52*52)

32

TEMPLATE_TITLE_LARGE

20

32

TEMPLATE_ICON_TITLE_LARGE

PNG(推荐52*52)

20

32

TYPE_LIST

TEMPLATE_ICON_LIST

PNG(推荐52*52)

TEMPLATE_TITLE_LIST

20

TEMPLATE_ICON_TITLE_LIST

PNG(推荐52*52)

20

其中,TYPE_RANGED和TYPE_LIST类型的值的具体限制如下:

表2 RANGE_VALUE和LIST_VALUE 限制

VALUE

字段

取值范围

备注

RANGED

max_value

取值为float类型

min_value

取值为float类型

cur_value

取值为float类型

LIST

value_count

[0-48]

value_list

取值为float类型

time_start

整点或半点

time_step

[1-48]

取值为30min的倍数,即 time_step*30min

cur_value

32个字符

应用入口型

作为应用的启动入口,表盘上只展示应用的图标。可选择模板只有一个TEMPLATE_LAUNCHER_ICON,要求设置图标和点击事件。

setIcon:设置图标资源ID,此图标会被显示到表盘的Complication上,建议使用PNG格式。

setClickEvent :设置点击Complication后触发的IntentAgent,支持打开带参数的Page Ability。开发者可以为所有类型的Complication数据都设置点击事件,但是只有入口型是必选字段。

提供实时数据

@Override

public void onRefresh(int complicationIndex, int type, ComplicationCallback callback) {

ComplicationEntity entity = new ComplicationEntity.Builder(getApplicationContext(), Complication.TYPE_LAUNCHER, ComplicationTemplate.TEMPLATE_LAUNCHER_ICON)

.setIcon(ResourceTable.Media_ic_demo)

.setClickEvent(getClickEvent())

.build();

callback.refresh(complicationIndex, entity);

}

提供预览数据

<?xml version=”1.0″ encoding=”UTF-8″ ?>

<complication-data>

<complication type=“LAUNCHER” template=“launcher_icon”>

<icon>$media:ic_demo</icon>

</complication>

</complication-data>

说明

此类型只支持一种模板,预览数据仅需提供icon。

简单数据型

表盘上展示单一数据,表盘上只展示开发者所定义的单一数据,例如步数、电量、日期等。可选择 TEMPLATE_ICON_TEXT, TEMPLATE_ICON_DIGIT, TEMPLATE_TITLE_TEXT, TEMPLATE_TITLE_DIGIT, TEMPLATE_ICON_TITLE_DIGIT, TEMPLATE_ICON_TITLE_TEXT六种模板。即图标和标题至少选择一个,数据类型可以是文本或数值,有且必须有其中一个。

setIcon:设置图标资源ID,此图标会被显示到表盘的Complication上。建议使用PNG格式,以便于表盘修改图标颜色。

setTitle:设置标题文本,文本长度最大为8个字符,一般为不频繁变化的提示性文字。

setTextValue:设置文本数据,文本长度最大为8个字符,一般为格式化的数据,比如”16米”。

setDigitValue:设置数值数据,数值为float类型,表盘显示时需要进行格式化。

setClickEvent :设置点击Complication后触发的IntentAgent,支持打开带参数的Page Ability。开发者可以为所有类型的Complication数据都设置点击事件,但是只有入口型是必选字段。

提供实时数据

@Override

public void onRefresh(int complicationIndex, int type, ComplicationCallback callback) {

ComplicationEntity entity = new ComplicationEntity.Builder(getApplicationContext(), Complication.TYPE_SIMPLE, ComplicationTemplate.TEMPLATE_ICON_DIGIT)

.setIcon(ResourceTable.Media_ic_demo)

.setDigitValue(1.2f)

.setClickEvent(getClickEvent())

.build();

callback.refresh(complicationIndex, entity);

}

提供预览数据

<?xml version=”1.0″ encoding=”UTF-8″ ?>

<complication-data>

<complication type=“SIMPLE” template=“icon_float_value”>

<icon>$media:ic_demo</icon>

<number>1.2f</number>

</complication>

<complication type=“SIMPLE” template=“icon_title_string_value”>

<icon>$media:ic_demo</icon>

<title>$string:demo_label</title>

<text>A demo value</text>

</complication>

</complication-data>

说明

每种类型只需提供一个模板,请根据模板字段要求提供信息。

区间数据型

展示有区间范围的数据,表盘上展示区间数值的当前值和区间范围,一般为环形、弧形等类似进度条的图例,例如设定了目标的步数数据。开发者可以选择TEMPLATE_ICON_RANGED、TEMPLATE_TITLE_RANGED和TEMPLATE_ICON_TITLE_RANGED三种模板。即图标和标题至少选择一个,必须提供RangedValue数据。其中RangedValue包含最大值max_value、最小值min_value和当前值cur_value。

setIcon:设置图标资源ID,此图标会被显示到表盘的Complication上。建议使用PNG格式,以便于表盘修改图标颜色。

setTitle:设置标题文本,文本长度最大为8个字符,一般为不频繁变化的提示性文字。

setRangedValue:设置区间数据,包含最大值、最小值和当前值,用于类似进度图形的展示。

setClickEvent :设置点击Complication后触发的IntentAgent,支持打开带参数的Page Ability。开发者可以为所有类型的Complication数据都设置点击事件,但是只有入口型是必选字段。

提供实时数据

@Override

public void onRefresh(int complicationIndex, int type, ComplicationCallback callback) {

RangedValue rangedValue = new RangedValue(40, –20, 4);

ComplicationEntity entity = new ComplicationEntity.Builder(getApplicationContext(), Complication.TYPE_RANGED, ComplicationTemplate.TEMPLATE_TITLE_RANGED)

.setTitle(“Demo title”)

.setRangedValue(rangedValue)

.setClickEvent(getClickEvent())

.build();

callback.refresh(complicationIndex, entity);

}

提供预览数据

<?xml version=”1.0″ encoding=”UTF-8″ ?>

<complication-data>

<complication type=“RANGED” template=“title_ranged_value”>

<title>$string:demo_title</title>

<min-value>-20</min-value>

<max-value>40</max-value>

<current>4</current>

</complication>

<complication type=“RANGED” template=“icon_ranged_value”>

<icon>$media:ic_demo</icon>

<min-value>-20</min-value>

<max-value>40</max-value>

<current>4</current>

</complication>

</complication-data>

说明

每种类型只需提供一个模板,请根据模板字段要求提供信息。

大尺寸数据

展示长文本数据,表盘会展示开发者所设定的长文本字段数据,例如会议安排、消息展示。开发者可以选择TEMPLATE_ICON_LARGE、TEMPLATE_TITLE_LARGE和TEMPLATE_TITLE_LARGE三种模板。即图标和标题至少选择一个,标题最长20个字符,必须提供一个长文本数据,长文本最长支持32个字符。

setIcon:设置图标资源ID,此图标会被显示到表盘的Complication上。建议使用PNG格式,以便于表盘修改图标颜色。

setTitle:设置标题文本,文本长度最大为20个字符,一般为不频繁变化的提示性文字。

setLongText:设置长文本数据,长文本最长支持32个字符,用于长文本数据的展示。

setClickEvent :设置点击Complication后触发的IntentAgent,支持打开带参数的Page Ability。开发者可以为所有类型的Complication数据都设置点击事件,但是只有入口型是必选字段。

提供实时数据

@Override

public void onRefresh(int complicationIndex, int type, ComplicationCallback callback) {

ComplicationEntity entity = new ComplicationEntity.Builder(getApplicationContext(), Complication.TYPE_LARGE, ComplicationTemplate.TEMPLATE_TITLE_LARGE)

.setIcon(ResourceTable.Media_ic_alarm)

.setTitle(“Demo title”)

.setLongText(“Next alarm: 2020-12-25 00:00”)

.setClickEvent(getClickEvent())

.build();

callback.refresh(complicationIndex, entity);

}

提供预览数据

<?xml version=”1.0″ encoding=”UTF-8″ ?>

<complication-data>

<complication type=“LARGE” template=“icon_title_large_value”>

<icon>$media:ic_alarm</icon>

<title>$string:demo_title</title>

<text>Next alarm: 2020-12-25 00:00</text>

</complication>

</complication-data>

说明

每种类型只需提供一个模板,请根据模板字段要求提供信息。

列表数据型

展示列表数据,表盘会展示开发者定义的列表,常用于展示某阶段内数据的变化,例如一天的电量变化趋势、一个月的体温变化趋势等。开发者可以选择TEMPLATE_ICON_LIST、TEMPLATE_TITLE_LIST和TEMPLATE_ICON_TITLE_LIST三种模板。即图标和标题至少选择一个,标题最长20个字符,必须提供一个列表类型的数据。

列表类型的数据中包含数值数量value_count (范围为[0,48])、历史值value_list、开始时间time_start (起始时间为整点或者半点)、时间步长time_step (设定为30min的倍数,倍数范围为[1,48])和当前值cur_value (字符串长度为32)。

setIcon:设置图标资源ID,此图标会被显示到表盘的Complication上。建议使用PNG格式,以便于表盘修改图标颜色。

setTitle:设置标题文本,文本长度最大为20个字符,一般为不频繁变化的提示性文字。

setListValue:设置列表数据,用于变化趋势类数据的展示。

setClickEvent :设置点击Complication后触发的IntentAgent,支持打开带参数的Page Ability。开发者可以为所有类型的Complication数据都设置点击事件,但是只有入口型是必选字段。

提供实时数据

@Override

public void onRefresh(int complicationIndex, int type, ComplicationCallback callback) {

ListValue listValue = new ListValue(new float[]{1, 2, 3, 4}, System.currentTimeMillis(), 2, “1°C”);

ComplicationEntity entity = new ComplicationEntity.Builder(getApplicationContext(), Complication.TYPE_LIST, ComplicationTemplate.TEMPLATE_TITLE_LIST)

.setTitle(“Demo title”)

.setListValue(listValue)

.build();

callback.refresh(complicationIndex, entity);

}

提供预览数据

<?xml version=”1.0″ encoding=”UTF-8″ ?>

<complication-data>

<complication type=“LIST” template=“title_list_value”>

<title>$string:demo_title</title>

<values>

<item>1</item>

<item>8</item>

<item>3</item>

<item>6</item>

<item>4</item>

</values>

<time-start>1607333200000</time-start>

<time-step>1</time-step>

<text>4km</text>

</complication>

</complication-data>

说明

每种类型只需提供一个模板,请根据模板字段要求提供信息。

支持多种数据类型

如果源数据不同,比如温度和空气质量,建议实现两个ComplicationProviderAbility分别提供数据。

如果源数据相同,但要支持不同的展示方式,比如温度数据,可以在一个ComplicationProviderAbility中支持两种Complication类型,分别显示当前温度简单数据和历史温度曲线两种UI。开发者需要:

在config.json添加类型

“metaData”: {

“customizeData”: [

{

“name”: “ohos.wearable.complication.COMPLICATION_TYPES”,

“value”: “SIMPLE,LIST”

},

]

}

在预览数据文件中,添加对应的预览数据

<?xml version=”1.0″ encoding=”UTF-8″ ?>

<complication-data>

<complication type=“SIMPLE” template=“title_string_value”>

</complication>

<complication type=“LIST” template=“title_list_value”>

</complication>

</complication-data>

在ComplicationProviderAbility代码中,根据表盘请求的数据类型返回对应类型的Complication数据。

注意事项

图标资源:在实时数据和预览数据中使用的图片资源,需要在resources/base/profile/remote.xml中进行声明,或者在config.json的COMPLICATION_PREVIEW_ICON中进行声明。前者适合多个图片的情形,后者适合只有一个图片的情形。

<?xml version=”1.0″ encoding=”UTF-8″ ?>

<remoteresources>

<item>$media:ic_demo_a</item>

<item>$media:ic_demo_b</item>

</remoteresources>

字符串资源:在预览数据中使用的字符串引用,需要在配置文件config.json中的COMPLICATION_PREVIEW_TITLE和COMPLICATION_PREVIEW_TEXT中进行声明。

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x